import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

class Main {
    public static boolean isFibonacciCycle(int N, List<Integer> sequence, int n) {
        // 判断当前生成的数列是否已经包含 N
        if (sequence.contains(N)) {
            return true;
        }

        // 如果数列长度超过 n 且当前项的和大于 N，直接返回 false
        if (sequence.size() > n && sequence.get(sequence.size() - 1) > N) {
            return false;
        }

        // 计算下一个类斐波那契数列的元素
        int nextValue = 0;
        for (int i = sequence.size() - n; i < sequence.size(); i++) {
            nextValue += sequence.get(i);
        }

        // 将新生成的值加入到数列中
        sequence.add(nextValue);

        // 递归计算下一个项
        return isFibonacciCycle(N, sequence, n);
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int maxNumber = 10000000;
        int maxCycleNumber = -1;

        // 通过递归检查每个数是否是类斐波那契循环数
        for (int N = 1; N <= maxNumber; N++) {
            List<Integer> sequence = new ArrayList<>();
            String strN = Integer.toString(N);
            int n = strN.length();

            // 初始化数列的前 n 项
            for (int i = 0; i < n; i++) {
                sequence.add(strN.charAt(i) - '0');
            }

            // 检查是否为类斐波那契循环数
            if (isFibonacciCycle(N, sequence, n)) {
                maxCycleNumber = N;
            }
        }

        // 输出最大的类斐波那契循环数
        System.out.println(maxCycleNumber);
        scan.close();
    }
}